Software systems that provides Web services, computing device operating systems, cellular phone and mobile device operating systems, and other software typically are updated throughout their lifetime. The delivery of changes to software by developers is a contentious task. Though software is tested before it is delivered to a live platform that serves users, unforeseen errors and bugs often arise that need to be dealt with by software engineers. The process of pushing updates out to software, detecting bugs and errors, and retracting or further revising the software is typically done by human programmers, and is inefficient and time-consuming. What is needed is an improved method for delivering changes to software systems.